WShape Example
See link below for the current IShapes from the AISC v16 steel database.
Constructing a WShape:
Before constructing, import the AISCSteel
package. Also import the StructuralUnits
package since we will use it later on.
using StructuralUnits
import AISCSteel
import AISCSteel.Shapes.IShapes.RolledIShapes as ris
The reason to call using
for StructuralUnits
is so the variables like ft
, inch
, kip
, etc are available automatically to you. Using the import
for AISCSteel
is better so the functions are still contained in the AISCSteel
package. This is how AISCSteel
was intened to be used. The structure of the package will help guide you to where you want to go. As you type the .
, suggestions will pop up giving you an idea of where you need to go. You may have to hit Tab
to see the suggestions. In the Julia REPL you will need to hit Tab
twice to see the list of suggestions.
Now that the package has been imported, lets construct a W14X90.
w = ris.WShape("W14x90")
AISCSteel.Shapes.IShapes.RolledIShapes.WShape("W14X90", 90.0 plf, 26.5 inch^2, 14.0 inch, 14.5 inch, 0.44 inch, 0.71 inch, 1.31 inch, 1.4375 inch, 11.396 inch, 999.0 inch^4, 157.0 inch^3, 143.0 inch^3, 6.14 inch, 362.0 inch^4, 75.6 inch^3, 49.9 inch^3, 3.7 inch, 4.06 inch^4, 16000.0 inch^6, 48.2 inch^2, 124.0 inch^4, 33.2 inch^3, 77.1 inch^3, 4.1 inch, 13.3 inch, 69.6 inch, 84.1 inch, 42.5 inch, 57.0 inch, 10.0 inch, 5.5 inch, 0.0 inch, 29000.0 ksi, 50.0 ksi)
The following went and searched through the AISC v16 steel database and pulled the relevant info to construct a WShape
. You can now access information in the struct like so:
The width of the flange:
w.b_f
14.5 inch
The weight of the WShape:
w.weight
90.0 plf
Compression Capacity of WShape:
See link below for the available functions relating to compression for the WShape member:
We can calculate the compressive capacity of the W14X90 shape we just constructed:
L_cx = L_cy = 20ft
ϕ_c = 0.9
P_n = ris.Compression.calc_Pn(w, L_cx, L_cy)
ϕP_n = ϕ_c * P_n
876.7044321578569 kip
This is great. However, as engineers, we would like it if we could see what the function did. That is where Handcalcs.jl comes in. This package can look into the function and show you what the function did. All you need to do is type @handcalcs
in front of the line that called the calc_Pn
function:
using Handcalcs
set_handcalcs(precision=2) # sets number of decimals displayed
@handcalcs P_n = ris.Compression.calc_Pn(w, L_cx, L_cy)
\[\begin{aligned} b &= \frac{b_{f}}{2} = \frac{14.5\;\mathrm{inch}}{2} = 7.25\;\mathrm{inch} \\[10pt] t &= t_{f} = 0.71\;\mathrm{inch} \\[10pt] \lambda &= \frac{b}{t} = \frac{7.25\;\mathrm{inch}}{0.71\;\mathrm{inch}} = 10.21 \\[10pt] \lambda_{r} &= 0.56 \cdot \sqrt{\frac{E}{F_{y}}} = 0.56 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 13.49 \\[10pt] \text{Since: }\lambda \leq \lambda_{r} &= 10.21 \leq 13.49 = true \\[10pt] class &= nonslender \\[10pt] h &= h = 11.4\;\mathrm{inch} \\[10pt] t_{w} &= t_{w} = 0.44\;\mathrm{inch} \\[10pt] \lambda &= \frac{h}{t_{w}} = \frac{11.4\;\mathrm{inch}}{0.44\;\mathrm{inch}} = 25.9 \\[10pt] \lambda_{r} &= 1.49 \cdot \sqrt{\frac{E}{F_{y}}} = 1.49 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 35.88 \\[10pt] \text{Since: }\lambda \leq \lambda_{r} &= 25.9 \leq 35.88 = true \\[10pt] class &= nonslender \\[10pt] \text{Since: }\frac{L_{cx}}{r_{x}} > \frac{L_{cy}}{r_{y}} &= \frac{20\;\mathrm{ft}}{6.14\;\mathrm{inch}} > \frac{20\;\mathrm{ft}}{3.7\;\mathrm{inch}} = false \\[10pt] L_{c} &= L_{cy} = 20\;\mathrm{ft} \\[10pt] r &= r_{y} = 3.7\;\mathrm{inch} \\[10pt] F_{e} &= \frac{\pi^{2} \cdot E}{\left( \frac{L_{c}}{r} \right)^{2}} = \frac{3.14^{2} \cdot 29000\;\mathrm{ksi}}{\left( \frac{20\;\mathrm{ft}}{3.7\;\mathrm{inch}} \right)^{2}} = 68.03\;\mathrm{ksi} \\[10pt] \text{Since: }\frac{L_{c}}{r} \leq 4.71 \cdot \sqrt{\frac{E}{F_{y}}} &= \frac{20\;\mathrm{ft}}{3.7\;\mathrm{inch}} \leq 4.71 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = true \\[10pt] F_{n} &= 0.66^{\frac{F_{y}}{F_{e}}} \cdot F_{y} = 0.66^{\frac{50\;\mathrm{ksi}}{68.03\;\mathrm{ksi}}} \cdot 50\;\mathrm{ksi} = 36.76\;\mathrm{ksi} \\[10pt] \text{Since: }\lambda_{wclass} &= nonslender = true \\[10pt] \text{Since: }\lambda_{fclass} &= nonslender = true \\[10pt] P_{n} &= F_{n} \cdot A_{g} = 36.76\;\mathrm{ksi} \cdot 26.5\;\mathrm{inch}^{2} = 974.12\;\mathrm{kip} \end{aligned}\]
Wow! No more black boxes!
AISCSteel has been designed with Handcalcs.jl in mind. So if you are in an environment like Pluto or Jupyter Notebook, you can use @handcalcs
to understand what is going on inside the function. You can also use it to generate nice, readable calculations. See here. There is also an extensive demo to see more functionality. See the Handcalcs Demo.
Flexure Capacity of WShape:
See link below for the available functions relating to flexure for the WShape member:
Major Axis Bending
We can calculate the flexural capacity about the x-axis of the W14X90 shape we just constructed:
L_b = 20ft
ϕ_b = 0.9
M_nx = ris.Flexure.calc_Mnx(w, L_b)
ϕM_nx = ϕ_b * M_nx
538.5180966509897 ft kip
Lets see what the calc_Mnx
function did:
@handcalcs M_nx = ris.Flexure.calc_Mnx(w, L_b)
\[\begin{aligned} b &= \frac{b_{f}}{2} = \frac{14.5\;\mathrm{inch}}{2} = 7.25\;\mathrm{inch} \\[10pt] t &= t_{f} = 0.71\;\mathrm{inch} \\[10pt] \lambda &= \frac{b}{t} = \frac{7.25\;\mathrm{inch}}{0.71\;\mathrm{inch}} = 10.21 \\[10pt] \lambda_{p} &= 0.38 \cdot \sqrt{\frac{E}{F_{y}}} = 0.38 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 9.15 \\[10pt] \lambda_{r} &= 1 \cdot \sqrt{\frac{E}{F_{y}}} = 1 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 24.08 \\[10pt] \text{Since: }\lambda_{p} < \lambda \leq \lambda_{r} &= 9.15 < 10.21 \leq 24.08 = true \\[10pt] class &= noncompact \\[10pt] h &= h = 11.4\;\mathrm{inch} \\[10pt] t_{w} &= t_{w} = 0.44\;\mathrm{inch} \\[10pt] \lambda &= \frac{h}{t_{w}} = \frac{11.4\;\mathrm{inch}}{0.44\;\mathrm{inch}} = 25.9 \\[10pt] \lambda_{p} &= 3.76 \cdot \sqrt{\frac{E}{F_{y}}} = 3.76 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 90.55 \\[10pt] \lambda_{r} &= 5.7 \cdot \sqrt{\frac{E}{F_{y}}} = 5.7 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 137.27 \\[10pt] \text{Since: }\lambda \leq \lambda_{p} &= 25.9 \leq 90.55 = true \\[10pt] class &= compact \\[10pt] \lambda_f, \lambda_pf, \lambda_rf, \lambda_fclass &= \lambda_{fvariabels} = \left[ \begin{array}{c} 10.21 \\ 9.15 \\ 24.08 \\ noncompact \\ \end{array} \right] \\[10pt] \lambda_w, \lambda_pw, \lambda_rw, \lambda_wclass &= \lambda_{wvariabels} = \left[ \begin{array}{c} 25.9 \\ 90.55 \\ 137.27 \\ compact \\ \end{array} \right] \\[10pt] \text{Since: }\lambda_{wclass} &= compact = true \\[10pt] \text{Since: }\lambda_{fclass} &= compact = noncompact = false \\[10pt] c &= 1 \\[10pt] M_{p} &= F_{y} \cdot Z_{x} = 50\;\mathrm{ksi} \cdot 157\;\mathrm{inch}^{3} = 654.17\;\mathrm{ft}\,\mathrm{kip} \\[10pt] L_{p} &= 1.76 \cdot r_{y} \cdot \sqrt{\frac{E}{F_{y}}} = 1.76 \cdot 3.7\;\mathrm{inch} \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 13.07\;\mathrm{ft} \\[10pt] L_{r} &= 1.95 \cdot r_{ts} \cdot \frac{E}{0.7 \cdot F_{y}} \cdot \sqrt{\frac{J \cdot c}{S_{x} \cdot h_{0}} + \sqrt{\left( \frac{J \cdot c}{S_{x} \cdot h_{0}} \right)^{2} + 6.76 \cdot \left( \frac{0.7 \cdot F_{y}}{E} \right)^{2}}} = 1.95 \cdot 4.1\;\mathrm{inch} \cdot \frac{29000\;\mathrm{ksi}}{0.7 \cdot 50\;\mathrm{ksi}} \cdot \sqrt{\frac{4.06\;\mathrm{inch}^{4} \cdot 1}{143\;\mathrm{inch}^{3} \cdot 13.3\;\mathrm{inch}} + \sqrt{\left( \frac{4.06\;\mathrm{inch}^{4} \cdot 1}{143\;\mathrm{inch}^{3} \cdot 13.3\;\mathrm{inch}} \right)^{2} + 6.76 \cdot \left( \frac{0.7 \cdot 50\;\mathrm{ksi}}{29000\;\mathrm{ksi}} \right)^{2}}} = 42.51\;\mathrm{ft} \\[10pt] F_{cr} &= \frac{C_{b} \cdot \pi^{2} \cdot E}{\left( \frac{L_{b}}{r_{ts}} \right)^{2}} \cdot \sqrt{1 + 0.08 \cdot \frac{J \cdot c}{S_{x} \cdot h_{0}} \cdot \left( \frac{L_{b}}{r_{ts}} \right)^{2}} = \frac{1 \cdot 3.14^{2} \cdot 29000\;\mathrm{ksi}}{\left( \frac{20\;\mathrm{ft}}{4.1\;\mathrm{inch}} \right)^{2}} \cdot \sqrt{1 + 0.08 \cdot \frac{4.06\;\mathrm{inch}^{4} \cdot 1}{143\;\mathrm{inch}^{3} \cdot 13.3\;\mathrm{inch}} \cdot \left( \frac{20\;\mathrm{ft}}{4.1\;\mathrm{inch}} \right)^{2}} = 104.68\;\mathrm{ksi} \\[10pt] k_{c} &= \frac{4}{\sqrt{\frac{h}{t_{w}}}} = \frac{4}{\sqrt{\frac{11.4\;\mathrm{inch}}{0.44\;\mathrm{inch}}}} = 0.79 \\[10pt] k_{c} &= \mathrm{max}\left( \mathrm{min}\left( k_{c}, 0.76 \right), 0.35 \right) = \mathrm{max}\left( \mathrm{min}\left( 0.79, 0.76 \right), 0.35 \right) = 0.76 \\[10pt] \text{Since: }L_{p} < L_{b} \leq L_{r} &= 13.07\;\mathrm{ft} < 20\;\mathrm{ft} \leq 42.51\;\mathrm{ft} = true \\[10pt] M_{nLTB} &= C_{b} \cdot \left( M_{p} - \left( M_{p} - 0.7 \cdot F_{y} \cdot S_{x} \right) \cdot \frac{L_{b} - L_{p}}{L_{r} - L_{p}} \right) = 1 \cdot \left( 654.17\;\mathrm{ft}\,\mathrm{kip} - \left( 654.17\;\mathrm{ft}\,\mathrm{kip} - 0.7 \cdot 50\;\mathrm{ksi} \cdot 143\;\mathrm{inch}^{3} \right) \cdot \frac{20\;\mathrm{ft} - 13.07\;\mathrm{ft}}{42.51\;\mathrm{ft} - 13.07\;\mathrm{ft}} \right) = 598.35\;\mathrm{ft}\,\mathrm{kip} \\[10pt] \text{Since: }\lambda_{fclass} &= noncompact = true \\[10pt] M_{nCFLB} &= M_{p} - \left( M_{p} - 0.7 \cdot F_{y} \cdot S_{x} \right) \cdot \frac{\lambda_{f} - \lambda_{pf}}{\lambda_{rf} - \lambda_{pf}} = 654.17\;\mathrm{ft}\,\mathrm{kip} - \left( 654.17\;\mathrm{ft}\,\mathrm{kip} - 0.7 \cdot 50\;\mathrm{ksi} \cdot 143\;\mathrm{inch}^{3} \right) \cdot \frac{10.21 - 9.15}{24.08 - 9.15} = 637.34\;\mathrm{ft}\,\mathrm{kip} \\[10pt] M_{n} &= \mathrm{min}\left( M_{nLTB}, M_{nCFLB} \right) = \mathrm{min}\left( 598.35\;\mathrm{ft}\,\mathrm{kip}, 637.34\;\mathrm{ft}\,\mathrm{kip} \right) = 598.35\;\mathrm{ft}\,\mathrm{kip} \end{aligned}\]
Minor Axis Bending
We can calculate the flexural capacity about the y-axis of the W14X90 shape we just constructed:
M_ny = ris.Flexure.calc_Mny(w)
ϕM_ny = ϕ_b * M_ny
272.6765792141038 ft kip
Lets see what the calc_Mny
function did:
@handcalcs M_ny = ris.Flexure.calc_Mny(w)
\[\begin{aligned} b &= \frac{b_{f}}{2} = \frac{14.5\;\mathrm{inch}}{2} = 7.25\;\mathrm{inch} \\[10pt] t &= t_{f} = 0.71\;\mathrm{inch} \\[10pt] \lambda &= \frac{b}{t} = \frac{7.25\;\mathrm{inch}}{0.71\;\mathrm{inch}} = 10.21 \\[10pt] \lambda_{p} &= 0.38 \cdot \sqrt{\frac{E}{F_{y}}} = 0.38 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 9.15 \\[10pt] \lambda_{r} &= 1 \cdot \sqrt{\frac{E}{F_{y}}} = 1 \cdot \sqrt{\frac{29000\;\mathrm{ksi}}{50\;\mathrm{ksi}}} = 24.08 \\[10pt] \text{Since: }\lambda_{p} < \lambda \leq \lambda_{r} &= 9.15 < 10.21 \leq 24.08 = true \\[10pt] class &= noncompact \\[10pt] b &= \frac{b_{f}}{2} = \frac{14.5\;\mathrm{inch}}{2} = 7.25\;\mathrm{inch} \\[10pt] M_{p} &= \mathrm{min}\left( F_{y} \cdot Z_{y}, 1.6 \cdot F_{y} \cdot S_{y} \right) = \mathrm{min}\left( 50\;\mathrm{ksi} \cdot 75.6\;\mathrm{inch}^{3}, 1.6 \cdot 50\;\mathrm{ksi} \cdot 49.9\;\mathrm{inch}^{3} \right) = 315\;\mathrm{ft}\,\mathrm{kip} \\[10pt] F_{cr} &= \frac{0.7 \cdot E}{\left( \frac{b}{t_{f}} \right)^{2}} = \frac{0.7 \cdot 29000\;\mathrm{ksi}}{\left( \frac{7.25\;\mathrm{inch}}{0.71\;\mathrm{inch}} \right)^{2}} = 194.69\;\mathrm{ksi} \\[10pt] M_{nFY} &= M_{p} = 315\;\mathrm{ft}\,\mathrm{kip} \\[10pt] \text{Since: }\lambda_{fclass} &= noncompact = true \\[10pt] M_{nLTB} &= M_{p} - \left( M_{p} - 0.7 \cdot F_{y} \cdot S_{y} \right) \cdot \frac{\lambda_{f} - \lambda_{pf}}{\lambda_{rf} - \lambda_{pf}} = 315\;\mathrm{ft}\,\mathrm{kip} - \left( 315\;\mathrm{ft}\,\mathrm{kip} - 0.7 \cdot 50\;\mathrm{ksi} \cdot 49.9\;\mathrm{inch}^{3} \right) \cdot \frac{10.21 - 9.15}{24.08 - 9.15} = 302.97\;\mathrm{ft}\,\mathrm{kip} \\[10pt] M_{n} &= \mathrm{min}\left( M_{nFY}, M_{nFLB} \right) = \mathrm{min}\left( 315\;\mathrm{ft}\,\mathrm{kip}, 302.97\;\mathrm{ft}\,\mathrm{kip} \right) = 302.97\;\mathrm{ft}\,\mathrm{kip} \end{aligned}\]